iT邦幫忙

2024 iThome 鐵人賽

DAY 7
0

Need

基本上的需要已經大概摸索出來了,考慮到之後的發展性,直接一個沒有結構的 repo 顯然是不行的,我們至少需要規畫:

Binary

目前可以擺放 example,之後更可以擺放一些協助指令,例如 toolgui_new_project 之類,讓使用者 go install 就可以使用。

Web

目前雖然只有 index.html 和 index.js ,但之後肯定要做成專門的 js/ts project,所以需要割出一個資料夾,而不是和其他 golang code 擺在一起。

這裡可以參考 Filebrowser: assets

E2E Test

我是直接參考 streamlit 的 unittest ,預定用 Cypresshttps://www.cypress.io/ 來做 e2e test,目前也先規劃一個資料夾給 cypress project。

Package

要 import 時的 folder。

底下有目前會有兩個 sub package:

  • tgcomp: 擺放 container 以外的 components 。
  • tgframe: 擺放主要的邏輯和介面。

Structure

所以會這樣規劃

.
├── cmd
│   └── example
├── go.mod
├── go.sum
├── toolgui-web
│   ├── mod.go
│   ├── index.html
│   └── index.js
├── toolgui-e2e
└── toolgui
    ├── tgcomp
    │   ├── button.go
    │   └── text.go
    └── tgframe
        ├── components.go
        └── http_runner.go

mod.go

這裡會負責 expose index.html 和 index.js (或是之後 js/ts project 的 compile result) 的 []byte。

package toolguiweb
import (
	_ "embed"
)

//go:embed index.html
var IndexBody []byte

//go:embed index.js
var JsBody []byte

components.go

擺放 Container Component,之後若要幫 Component 做 interface 也會放在這裡。

http_runner.go

就是負責處理 HTTP Handler 的邏輯。


上一篇
Day6 Rerun 按鈕 / Bulma CSS / 搬出 JS
下一篇
Day8 State/StateTable
系列文
用 Golang 實作 streamlit 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言